#include "stm32f10x.h"//头文件
#include "smg.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
#include "exti.h"
static u8 i=0,j=0,flag=1;
static char numsf[7],nums[7];
int main(void)// 主函数
{		
    SMG_Init();
    KEY_Init();
    delay_init();
    EXTIX_Init();
    while(1)// 无限循环
    {	i=0;
			j=0;
			for(i=0;i<7;i++){//将输液位标志位转化为对应编号
						if(nums[i]==1){
							numsf[j]=i+1;
							j++;
						}else{
							continue;
						}
				}
			if(flag==0){
			for(i=0;i<7;i++){
				if(numsf[i]!=0){
					SMG_Dpy(1,numsf[i]);//显示输液位
					delay_ms(800);
					}
				}
			}else{
				SMG_Dpy(1,0);//显示数字0
			}
		}
    }
// EXTI0中断服务程序
void EXTI0_IRQHandler(void)
{	delay_ms(10);
	if(KEY0==0){
		nums[0]=1;//输液1号位置
		flag=0;
	}
	EXTI_ClearITPendingBit(EXTI_Line0); // 清除LINE0 上的中断标志位
}
// EXTI1中断服务程序
void EXTI1_IRQHandler(void)
{	delay_ms(10);
	if(KEY1==0){
		nums[1]=1;//输液2号位置
		flag=0;
	}
EXTI_ClearITPendingBit(EXTI_Line1); // 清除 LINE1 上的中断标志位
}
// EXTI2中断服务程序
void EXTI2_IRQHandler(void)
{	delay_ms(10);
	if(KEY2==0){
		nums[2]=1;//输液3号位置
		flag=0;
	}
	EXTI_ClearITPendingBit(EXTI_Line2); // 清除LINE2上的中断标志位
}
// EXTI3中断服务程序
void EXTI3_IRQHandler(void)
{	delay_ms(10);
	if(KEY3==0){
		nums[3]=1;//输液4号位置
		flag=0;
	}
EXTI_ClearITPendingBit(EXTI_Line3); // 清除LINE3上的中断标志位
}
// EXTI4中断服务程序
void EXTI4_IRQHandler(void)
{	delay_ms(10);
	if(KEY4==0){
		nums[4]=1;//输液5号位置
		flag=0;
	}
	EXTI_ClearITPendingBit(EXTI_Line4); // 清除 LINE4 上的中断标志位
}
// EXTI9_5中断服务程序
void EXTI9_5_IRQHandler(void)
{	
	delay_ms(20);
	if(KEY5==0){
		nums[5]=1;//输液6号位置
		flag=0;
	}
	EXTI_ClearITPendingBit(EXTI_Line5); // 清除 LINE5 上的中断标志位
	if(KEY6==0){
		nums[6]=1;//输液7号位置
		flag=0;
	}
	EXTI_ClearITPendingBit(EXTI_Line6); // 清除 LINE6 上的中断标志位
	if(CLSKEY==0){
		flag=1;//关闭数码管床位显示程序
		GPIO_Write(GPIOA, 0xff);//关闭数码管
		for(i=0;i<7;i++){//清空输液位标志位
			nums[i]=0;
		}
		for(i=0;i<7;i++){//清空输液位编号数组
			numsf[i]=0;
		}
	}
	EXTI_ClearITPendingBit(EXTI_Line7); // 清除 LINE7 上的中断标志位
}